/*******************************************************************************
* 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
* 版本：v1.0.0<br>
* 文件：AppSearchComponent.js<br>
* 日期：2017年10月9日<br>
* 作者: 杨顺强<br>
* 功能：应用程序检索模块对象<br>
* 
* 修改记录：<br>
* 日期 描述 更新功能<br>
******************************************************************************/
 
window.makeNamespace(window,"Rainier.UI.V2");

Rainier.UI.V2.AppSearchComponent = Rainier.UI.V2.AppViewComponent.extend({

 	NAME : "Rainier.UI.V2.AppSearchComponent",

 	/**
	 * 函数名称：init<br>
	 * 函数功能：构造函数<br>
	 * 参数信息：app : 应用程序对象，
	 * 异常信息：无<br>
	 */
 	init : function(app,parentContainer){
        this._super(app,parentContainer);
 		this.container = $('<div class="app-search"></div>');
 		// this.partLibComponent = null;
 	},

 	/**
	 * 函数名称：createView<br>
	 * 函数功能：根据参数信息： 是否存在容器元素，进行不同形式的布局设置<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	createView : function(){
 		if(this.parentContainer){
            this.container.appendTo(this.parentContainer);
        }else{
            this.container.appendTo($("body"));
        }
 		this.partLibComponent = this.application.getPartLibComponent();
 		//创建视图
 		this.createViewDom();
 		this.input.appendTo(this.container);
 		this.inputControl.appendTo(this.container);

 		//绑定事件
 		this.bindCallBackFn();
 	},

 	/**
	 * 函数名称：createViewDom<br>
	 * 函数功能：创建当前组件的dom元素<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	createViewDom : function(){
 		this.input        = $('<input type="text" class="app-search-input" placeholder="器材搜索">');
 		this.inputControl = $('<input type="button" class="app-search-control">');
 	},

 	/**
	 * 函数名称：createView<br>
	 * 函数功能：对组件中的控制元素，进行事件绑定，此处，调用context内部的功能函数<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	bindCallBackFn : function(){
 		// throw new Error("此函数有子类实现,当前对象可理解为抽象类，不向外提供实例，谢谢配合");
 		var _this = this;
 		this.input.on("keydown",function(event){
 			if(event.keyCode === 13){
 				var target = event.target;
 				var value = $(".app-search-input").val();
 				_this.findPartToShow(value);
 				_this.stopEventPropagation(event);
 			}
 		});
 		this.inputControl.on("click",function(event){
 			var value = $(".app-search-input").val();
 			_this.findPartToShow(value);
 			_this.stopEventPropagation(event);
 		});
 		//对搜索框失去焦点不做处理
 		// this.input.on("blur",function(event){
 		// 	var value = $(".app-search-input").val();
 		// 	alert(value);
 		// 	_this.stopEventPropagation(event);
 		// });
 	},

 	/**
	 * 函数名称：findPartToShow<br>
	 * 函数功能：查找元件并显示在元件库列表中<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	findPartToShow : function(value){
 		var flag = $(".app-part").data("flag");
 		if(!flag){
 			$(".app-part").click();
 		}

 		var partArray = Rainier.UI.V2.PartLibList.findLikeValue(value);
 		if(partArray.length === 0){
 			alert("sorry,您查找的元件不存在!!!");
 			return;
 		}
 		this.partLibComponent.isSearchedResult = true;
 		this.partLibComponent.clearContainer();
 		this.partLibComponent.createViewDom(partArray);
 	},

 	/**
	 * 函数名称：enableComponent<br>
	 * 函数功能：启用组件内部功能<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	enableComponent : function(){
 		throw new Error("此函数有子类实现,当前对象可理解为抽象类，不向外提供实例，谢谢配合");
 	},

 	/**
	 * 函数名称：disableComponent<br>
	 * 函数功能：禁用组件功能<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	disableComponent : function(){
 		throw new Error("此函数有子类实现,当前对象可理解为抽象类，不向外提供实例，谢谢配合");
 	},
});

